// 引入刚刚在建立连接mysql数据库的db.js文件
const db = require('../config/db');
const uuid= require('uuid')

// 引入Sequelize对象
const Sequelize = db.sequelize;
// 引入上一步的文章数据表模型文件
const mUser = Sequelize.import('../schema/user');
// 自动创建表
mUser.sync({force: false});

class UserModel {
    /**
     * 创建用户模型
     * @param data
     * @returns {Promise<*>}
     */
    static async createUser(data) {
        //console.log("object");
        return await mUser.create({
            id: uuid.v4().replace(/\-/g,""), 
            username: data.username, 
            loginname: data.loginname, 
            password: data.password,
            phone:data.phone,
            iconUrl:data.iconUrl
        })
    }
    /**批量增加 */
    static async createUsers(data) {
        //console.log(data);
        return await mUser.bulkCreate(data,{ignoreDuplicates:true}).catch(e=>{ console.log(e,"异常");})
    }

    /**
     * 获取所有用户
     */
    static async getAllUser(){
        try {
            return await mUser.findAll({ order:Sequelize.literal('partname ASC,loginname ASC'),attributes:{exclude:['password']}});
        } catch (error) {
            console.log(error);
        }
        
    }

    /**
     * 获取用户信息
     * @param loginname  登录名
     * @returns {Promise<Model>}
     */
    static async getUserByLoginName(loginname) {
        return await mUser.findOne({
            where: {
                loginname,
            },
        })
    }
    /**
     * 获取用户信息
     * @param id  用户ID
     * @returns {Promise<Model>}
     */
    static async getUserByID(id) {
        return await mUser.findOne({
            where: {
                id,
            },
        })
    }
    /**
     * 删除用户信息
     * @param {*} id 
     */
    static async deleteUserById(id) {
        return await mUser.destroy({
            where: {
                id,
            },
        })
    }
    /**
     * 更新用户信息
     * @param {*} id 
     * @param {*} username 
     * @param {*} loginname 
     * @param {*} password 
     * @param {*} phone 
     * @param {*} iconUrl 
     */
    static async updateUser(id,username, 
        loginname, 
        password,
        phone,
        iconUrl){
        return await mUser.update({
            username, 
            loginname, 
            password,
            phone,
            iconUrl
        },{
            where:{
                id
            }
        })
    }
    static async updateUserpswByloginName(
        loginname,password
        ){
        return await mUser.update({
            password
        },{
            where:{
                loginname
            }
        })
    }
}

module.exports = UserModel